package com.ingweb.hibernate.dao;

import java.util.List;
import com.ingweb.hibernate.model.Categoria;

/***
 * 
 * @author JUAN CAMILO ALZATE RESTREPO
 * @version 1.0
 * 
 * Interfaz de acceso a datos de la tabla Categoria
 *
 */
public interface DAOCategoria {

	/**
	 * Metodo que devuelve un listado con todas las categorias
	 * que actualmente se encuentran en la base de datos
	 * @return Listado de entidades de tipo Categoria
	 */
	public List<Categoria> obtenerCategorias();
	
	/**
	 * Metodo que devuelve una categoria a partir de su ID
	 * @param codigo Valor entero que identifica la categoria
	 * @return Instancia de Categoria
	 */
	public Categoria obtenerCategoria(int codigo);
	
	/**
	 * Metodo que permite persistir una Categoria en la base de datos
	 * @param categoria Instancia de la Categoria a persistir
	 */
	public void guardarCategoria(Categoria categoria);
	
	/**
	 * Metodo que permite eliminar una Categoria en la base de datos
	 * @param categoria Instancia de la Categoria a eliminar
	 */
	public void eliminarCategoria(Categoria categoria);
	
	/**
	 * Metodo que permite persistir una Categoria ya existente en la base de datos
	 * @param categoria Instancia de la Categoria a persistir
	 */
	public void editarCategoria(Categoria categoria);
	
	/**
	 * Metodo que permite realizar una busqueda de una categoria a partir de una
	 * palabra clave en su atributo nombre
	 * @param cadena Keyword para realizar la busqueda
	 * @return Listado de entidades de tipo Categoria que coinciden con el string de busqueda
	 */
	public List<Categoria> buscarCategoria(String cadena);
}
